Page({

  data: {
    textArr: [],  // 存储文章数据
    pageNo: 1,    // 当前页码
    pageSize: 10, // 每页显示的数量
    moreshow: false,  // 控制加载中提示的显示
  },

  // 加载更多数据
  loadMoreData: function () {
    this.setData({
      moreshow: true
    });
    this.fetchArticles();
  },

  // 请求文章列表数据
  fetchArticles: function () {
    wx.showLoading({
      title: '加载中...',
    });
    
    wx.request({
      url: `http://127.0.0.1:9090/articles?pageNum=${this.data.pageNo}&pageSize=${this.data.pageSize}`,
      
      success: (res) => {
        const articles = res.data.list; // 假设返回的数据在 list 中
        if (articles.length === 0) {
          wx.showToast({
            title: '没有更多数据',
            icon: 'none',
            duration: 1500,
          });
        } else {
          // 使用 Promise.all 确保所有图片都加载完成后再更新数据
          const imagePromises = articles.map(item => {
            return new Promise((resolve) => {
              this.getImage(item, resolve);
            });
          });

          // 等待所有图片加载完成
          Promise.all(imagePromises).then(() => {
            this.setData({
              textArr: this.data.pageNo === 1 ? articles : this.data.textArr.concat(articles),
              pageNo: this.data.pageNo + 1,  // 更新页码
              moreshow: false,  // 隐藏加载中提示
            });
          });
        }
        wx.hideLoading();
      },
      fail: (err) => {
        console.error('请求失败', err);
        wx.hideLoading();
      },
    });
  },

  // 获取图片并转为 base64
  getImage: function(item, callback) {
    const that = this;
    wx.request({
      url: 'http://localhost:9090/file/download2', // 图片回显接口
      method: 'GET',
      data: {
        fileName: item.image, // 图片名
      },
      success: function(res) {
        // 获取到图片的 base64 编码后，更新图片数据
        if (res.data) {
          item.image = 'data:image/png;base64,' + res.data; // 图片转为 base64 格式
        }

        callback(); // 调用回调函数，表示图片加载完成
      },
      fail: function() {
        wx.showToast({
          title: '图片加载失败',
          icon: 'none'
        });
        callback(); // 即使失败，也调用回调函数，避免阻塞后续操作
      }
    });
  },

  // 跳转到文章详情页
  toTextDetail: function (e) {
    const selectedArticle = this.data.textArr[e.currentTarget.dataset.index];

    if (selectedArticle) {
      wx.setStorageSync("obj", selectedArticle);
      wx.navigateTo({
        url: "../more/moredetail/moreDetail",  // 文章详情页面路径
      });
    } else {
      wx.showToast({
        title: '文章数据加载失败',
        icon: 'none'
      });
    }
  },
  
  // 页面加载时
  onLoad: function (options) {
    this.fetchArticles();
  },

  // 页面上拉触底事件的处理函数
  onReachBottom: function () {
    this.loadMoreData();
  },
})
